[id].vue 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253
  1. <template>
  2. <div>
  3. <HomePageHead></HomePageHead>
  4. <HomePageNavigation></HomePageNavigation>
  5. <HomeAdvertising :imgurl="adImg1" v-if="adImg1"></HomeAdvertising>
  6. <!-- 面包屑导航 -->
  7. <div class="breadcrumb phone_none">
  8. <div class="inner">
  9. <span class="location">当前位置:</span>
  10. <el-breadcrumb :separator-icon="ArrowRight">
  11. <el-breadcrumb-item>
  12. <NuxtLink to="/">首页</NuxtLink>
  13. </el-breadcrumb-item>
  14. <el-breadcrumb-item>
  15. <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
  16. </el-breadcrumb-item>
  17. <el-breadcrumb-item>简历详情</el-breadcrumb-item>
  18. </el-breadcrumb>
  19. </div>
  20. </div>
  21. <div class="breadcrumb_box pc_none">
  22. <span class=" ">当前位置:</span>
  23. <NuxtLink to="/">首页</NuxtLink>
  24. <span class=" ">&gt;</span>
  25. <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
  26. <span class=" ">&gt;</span>
  27. <span class=" ">简历详情</span>
  28. </div>
  29. <!-- 简历 -->
  30. <main class="gerenjianli" v-if="type == 2">
  31. <!-- 个人简历 -->
  32. <section class="index_1 clearfix">
  33. <div class="seek_head_box clearfix phone_none">
  34. <div class="seek_head_left">
  35. <a class="seek_head_a seek_head_only" title="">个人简历</a>
  36. </div>
  37. <div class="seek_head_right_box clearfix">
  38. <span class="seek_head_right_text">更新时间:{{ jobInfo.created_at }}</span>
  39. </div>
  40. </div>
  41. <div class="phone_box_1 pc_none">
  42. <div class="phone_box_1_head">
  43. <a title="">个人简历</a>
  44. <span class="phone_box_1_head_time">更新时间:{{ jobInfo.created_at }}</span>
  45. </div>
  46. </div>
  47. <div class="index_1_left clearfix">
  48. <div class="seek_introduce_box clearfix">
  49. <div class="seek_introduce_left clearfix">
  50. <div class="seek_introduce_head clearfix">
  51. <h4 class="seek_introduce_h4">{{ jobInfo.name }}</h4>
  52. <div class="seek_introduce_tag clearfix" v-if="resume">此简历已被推荐</div>
  53. <div class="seek_introduce_text clearfix phone_none" v-if="resume">
  54. (已有单位把本简历加入人才库)
  55. </div>
  56. </div>
  57. <div class="seek_introduce_title_box clearfix">
  58. <span class="seek_introduce_label">期望岗位:</span>
  59. <span class="seek_introduce_title">{{ jobInfo.jtzw_name }}</span>
  60. <div class="phone_introduce_title_hr pc_none"></div>
  61. <span class="seek_introduce_label">薪资待遇:</span>
  62. <span class="seek_introduce_title">{{ jobInfo.salary_name }}</span>
  63. </div>
  64. </div>
  65. </div>
  66. <div class="seek_introduce_foot clearfix phone_none">
  67. <span class="seek_introduce_foot_text" v-if="jobInfo.sexy">
  68. {{ jobInfo.sexy == 1 ? '男' : '女' }}
  69. </span>
  70. <span class="seek_introduce_foot_text" v-if="jobInfo.birth">
  71. {{ getTime(jobInfo.birth, 'year', 0) }}
  72. </span>
  73. <span class="seek_introduce_foot_text" v-if="jobInfo.origin">
  74. 籍贯:{{ jobInfo.origin }}
  75. </span>
  76. <!-- <span class="seek_introduce_foot_text">汉族</span> -->
  77. <span class="seek_introduce_foot_text" v-if="jobInfo.education_name">
  78. {{ jobInfo.education_name }}
  79. </span>
  80. <span class="seek_introduce_foot_text" v-if="jobInfo.experience_name">
  81. {{ jobInfo.experience_name }}
  82. </span>
  83. <span class="seek_introduce_foot_text" v-if="jobInfo.hunt_cityname">
  84. 工作地点:{{ jobInfo.hunt_cityname }}
  85. </span>
  86. <span class="seek_introduce_foot_text" v-if="jobInfo.language_name">
  87. {{ jobInfo.language_name }}
  88. </span>
  89. </div>
  90. </div>
  91. <div class="index_1_right clearfix">
  92. <img class="index_1_right_img" src="@/public/image/touxiang.png" title="" alt=""
  93. v-if="!jobInfo.imgurl">
  94. <img class="index_1_right_img" :src="jobInfo.imgurl" title="" alt="" v-if="jobInfo.imgurl">
  95. </div>
  96. <div class="seek_introduce_foot clearfix pc_none">
  97. <template v-if="jobInfo.sexy">{{ jobInfo.sexy == 1 ? '男' : '女' }}<span class="seek_introduce_foot_text" ></span> </template>
  98. <template v-if="jobInfo.birth">{{ jobInfo.birth }}<span class="seek_introduce_foot_text" ></span> </template>
  99. <template v-if="jobInfo.origin">籍贯:{{ jobInfo.origin }}<span class="seek_introduce_foot_text" ></span> </template>
  100. <template v-if="jobInfo.education_name">{{ jobInfo.education_name }}<span class="seek_introduce_foot_text" ></span> </template>
  101. <template v-if="jobInfo.experience_name">工作地点:{{ jobInfo.experience_name }}<span class="seek_introduce_foot_text" ></span> </template>
  102. <template v-if="jobInfo.hunt_cityname">{{ jobInfo.hunt_cityname }}<span class="seek_introduce_foot_text" ></span> </template>
  103. <template v-if="jobInfo.language_name">{{ jobInfo.language_name }}<span class="seek_introduce_foot_text" ></span> </template>
  104. </div>
  105. </section>
  106. <!-- 个人简历 -->
  107. <div class="contact_me" v-if="type_id == 3">
  108. <div class="contact_me_btn" @click="getContactMe">
  109. <span class="contact_me_btn_img"></span>
  110. 沟通简历
  111. </div>
  112. </div>
  113. <div class="contact_me" v-else>
  114. <div class="contact_me_btn contact_me_btn_2">
  115. <span class="contact_me_btn_img"></span>
  116. 沟通简历
  117. </div>
  118. </div>
  119. </main>
  120. <main class="jianli" v-if="type == 2">
  121. <!-- 自我介绍 -->
  122. <section class="index_2 clearfix">
  123. <div class="seek_head_box clearfix phone_none">
  124. <div class="seek_head_left">
  125. <a class="seek_head_a seek_head_only" title="">自我介绍</a>
  126. </div>
  127. </div>
  128. <div class="phone_box_2 pc_none">
  129. <div class="phone_box_1_head">
  130. <a title="">自我介绍</a>
  131. </div>
  132. </div>
  133. <article class="seek_article">
  134. {{ jobInfo.self_evaluation }}
  135. </article>
  136. </section>
  137. <!-- 自我介绍 -->
  138. <!-- 工作经历 -->
  139. <section class="index_3 clearfix">
  140. <div class="seek_head_box clearfix phone_none">
  141. <div class="seek_head_left">
  142. <a class="seek_head_a seek_head_only" title="">工作经历</a>
  143. </div>
  144. </div>
  145. <div class="phone_box_3 pc_none">
  146. <div class="phone_box_1_head">
  147. <a title="">工作经历</a>
  148. </div>
  149. </div>
  150. <div class="seek_in clearfix" v-for="(item, index) in experienceInfo" :key="index">
  151. <div class="seek_in_head clearfix">
  152. <span class="seek_in_head_text "> {{ item.company_name }}</span>
  153. <span class="seek_in_head_text pc_none" style="float: right;" v-if="item.job_timeList">
  154. {{ getTime(item.job_timeList[0], 'year', 0) }}
  155. -
  156. {{ getTime(item.job_timeList[1], 'year', 0) }}
  157. </span>
  158. <span class="seek_in_head_text">
  159. 职位类别:
  160. <span class="phone_name_1 pc_none">
  161. {{ item.zw_name }}
  162. </span>
  163. <span class="phone_none">
  164. {{ item.zw_name }}
  165. </span>
  166. </span>
  167. <span class="seek_in_head_text">
  168. 具体职位:
  169. <span class="phone_name_1 pc_none">
  170. {{ item.jtzw_name }}
  171. </span>
  172. <span class="phone_none">
  173. {{ item.jtzw_name }}
  174. </span>
  175. </span>
  176. <span class="seek_in_head_text phone_none" style="float: right;" v-if="item.job_timeList">
  177. {{ getTime(item.job_timeList[0], 'year', 0) }}
  178. -
  179. {{ getTime(item.job_timeList[1], 'year', 0) }}
  180. </span>
  181. </div>
  182. <div class="seek_in_ul clearfix">
  183. <div class="seek_in_li clearfix">
  184. <label class="seek_in_label">工作内容:</label>
  185. <div class="seek_in_li_text">{{ item.job_content }}</div>
  186. </div>
  187. <div class="seek_in_li clearfix">
  188. <label class="seek_in_label">工作业绩:</label>
  189. <div class="seek_in_li_text">{{ item.performance }}</div>
  190. </div>
  191. </div>
  192. </div>
  193. </section>
  194. <!-- 工作经历 -->
  195. <!-- 教育背景 -->
  196. <section class="index_4 clearfix">
  197. <div class="seek_head_box clearfix phone_none">
  198. <div class="seek_head_left">
  199. <a class="seek_head_a seek_head_only" title="">教育背景</a>
  200. </div>
  201. </div>
  202. <div class="phone_box_4 pc_none">
  203. <div class="phone_box_1_head">
  204. <a title="">教育背景</a>
  205. </div>
  206. </div>
  207. <div class="seek_in clearfix" v-for="(item, index) in education" :key="index">
  208. <div class="seek_in_head phone_seek_in_head clearfix">
  209. <span class="seek_in_head_text"
  210. v-if="item.school_name || item.education_name || item.school_major || item.school_timeList">
  211. {{ item.school_name }}
  212. </span>
  213. <span class="seek_in_head_text pc_none" style="float: right;" v-if="item.school_timeList">
  214. {{ getTime(item.school_timeList[0], 'year', 0) }}
  215. -
  216. {{ getTime(item.school_timeList[1], 'year', 0) }}
  217. </span>
  218. <span class="seek_in_head_text">
  219. {{ item.education_name }}
  220. </span>
  221. <span class="seek_in_head_text">{{ item.school_major }}</span>
  222. <span class="seek_in_head_text phone_none" style="float: right;" v-if="item.school_timeList">
  223. {{ getTime(item.school_timeList[0], 'year', 0) }}
  224. -
  225. {{ getTime(item.school_timeList[1], 'year', 0) }}
  226. </span>
  227. </div>
  228. <div class="seek_in_ul clearfix" v-if="item.school_experience">
  229. <div class="seek_in_li clearfix">
  230. <label class="seek_in_label">在校经历:</label>
  231. <div class="seek_in_li_text">{{ item.school_experience }}</div>
  232. </div>
  233. </div>
  234. </div>
  235. </section>
  236. <!-- 教育背景 -->
  237. <!-- 专业技能 -->
  238. <section class="index_5 clearfix">
  239. <div class="seek_head_box clearfix phone_none">
  240. <div class="seek_head_left">
  241. <a class="seek_head_a seek_head_only" title="">专业技能</a>
  242. </div>
  243. </div>
  244. <div class="phone_box_5 pc_none">
  245. <div class="phone_box_1_head">
  246. <a title="">专业技能</a>
  247. </div>
  248. </div>
  249. <div class="seek_in clearfix">
  250. <div class="seek_in_ul clearfix">
  251. <div class="seek_in_li clearfix" v-for="(item, index) in skillList">
  252. <!-- <label class="seek_in_label" v-if="item.skill">{{ index + 1 }}.</label> -->
  253. <div class="seek_in_li_text">{{ item.skill }}</div>
  254. </div>
  255. </div>
  256. </div>
  257. </section>
  258. <!-- 专业技能 -->
  259. <!-- 联系方式 -->
  260. <section class="index_6 clearfix">
  261. <div class="seek_head_box clearfix phone_none">
  262. <div class="seek_head_left">
  263. <a class="seek_head_a seek_head_only" title="">联系方式</a>
  264. </div>
  265. </div>
  266. <div class="phone_box_6 pc_none pc_none">
  267. <div class="phone_box_1_head">
  268. <a title="">自我介绍</a>
  269. </div>
  270. </div>
  271. <div class="seek_in clearfix" v-if="type_id == 10000 || type_id == 3">
  272. <article class="seek_article_2">
  273. {{ jobInfo.phone }}
  274. </article>
  275. </div>
  276. <div class="seek_in clearfix" v-else>
  277. <article class="seek_article_2">
  278. 登录后可查看
  279. </article>
  280. </div>
  281. </section>
  282. <!-- 联系方式 -->
  283. <!-- 弹框 -->
  284. <section class="cruit_alert_rgb clearfix" v-if="resumeBool">
  285. <!-- 请选择要投递的简历1 -->
  286. <div class="cruit_alert_rgb_box">
  287. <div class="cruit_alert_rgb_head_box">
  288. <div class="cruit_alert_rgb_close hand back100"></div>
  289. <div class="cruit_alert_rgb_head">请选择要沟通的岗位
  290. <span class="close" @click="resumeBool = false">x</span>
  291. </div>
  292. </div>
  293. <form class="cruit_alert_rgb_form clearfix" action=" " method=" ">
  294. <div class="cruit_alert_rgb_form_in clearfix">
  295. <div class="cruit_alert_rgb_li clearfix" v-for="(item, index) in companyJobList"
  296. :key="item.id">
  297. <el-radio :value="item.id" v-model="company_job" @change="jobChange">
  298. <div class="cruit_alert_rgb_label dot1">
  299. {{ item.title }}
  300. </div>
  301. </el-radio>
  302. </div>
  303. </div>
  304. <div class="cruit_alert_rgb_foot clearfix">
  305. <div class="cruit_alert_rgb_foot_sub hand" @click="getresume">沟通岗位</div>
  306. </div>
  307. </form>
  308. </div>
  309. <!-- 请选择要投递的简历2 -->
  310. </section>
  311. </main>
  312. <!-- 岗位 -->
  313. <!-- <div class="gangwei" v-if="type == 1">
  314. <main class="color_main">
  315. <main class="index_main">
  316. <section class="index_1 clearfix">
  317. <div class="cruit_head_box clearfix">
  318. <div class="cruit_head_left">
  319. <a class="cruit_head_a cruit_head_only" title="">基本信息</a>
  320. </div>
  321. </div>
  322. <div class="index_1_box clearfix">
  323. <div class="demand_head_box clearfix">
  324. <div class="demand_head_name">{{ jobInfo.title }}</div>
  325. <div class="demand_head_btn hand" v-if="type_id == 1" @click="applyJob">申请该职位</div>
  326. <div class="demand_head_btn1" v-if="type_id != 1">申请该职位</div>
  327. </div>
  328. <div class="cruit_li_2_foot clearfix">
  329. <span class="cruit_li_2_foot_tag cruit_li_2_foot_exper">
  330. {{ jobInfo.hy_name }}
  331. &gt;
  332. {{ jobInfo.zw_name }}
  333. </span>
  334. <span class="cruit_li_2_foot_tag cruit_li_2_foot_addres">{{ jobInfo.city_name }}</span>
  335. </div>
  336. </div>
  337. </section>
  338. </main>
  339. </main>
  340. <main class="index_main">
  341. <section class="index_2 clearfix">
  342. <div class="demand_1 clearfix">
  343. <div class="demand_left_1 clearfix">
  344. <div class="cruit_head_box clearfix">
  345. <div class="cruit_head_left">
  346. <a class="cruit_head_a cruit_head_only" title="">基本要求</a>
  347. </div>
  348. </div>
  349. <div class="demand_ul_2">
  350. <div class="demand_li_2 clearfix">
  351. <div class="demand_li_2_label">工作性质:</div>
  352. <div class="demand_li_2_text clearfix">{{ jobInfo.job_nature_name }}</div>
  353. </div>
  354. <div class="demand_li_2 clearfix">
  355. <div class="demand_li_2_label">工作经验:</div>
  356. <div class="demand_li_2_text clearfix">{{ jobInfo.experience_name }}</div>
  357. </div>
  358. <div class="demand_li_2 clearfix">
  359. <div class="demand_li_2_label">学历文凭:</div>
  360. <div class="demand_li_2_text clearfix">{{ jobInfo.education_name }}</div>
  361. </div>
  362. <div class="demand_li_2 clearfix">
  363. <div class="demand_li_2_label">语言选择:</div>
  364. <div class="demand_li_2_text clearfix">{{ jobInfo.language_name }}</div>
  365. </div>
  366. <div class="demand_li_2 clearfix">
  367. <div class="demand_li_2_label">薪资待遇:</div>
  368. <div class="demand_li_2_text clearfix">{{ jobInfo.salary_name }}</div>
  369. </div>
  370. <div class="demand_li_2 clearfix">
  371. <div class="demand_li_2_label">截止日期:</div>
  372. <div class="demand_li_2_text clearfix">
  373. {{ getTime(jobInfo.created_at, 'year', 1) }}
  374. </div>
  375. </div>
  376. </div>
  377. </div>
  378. <div class="demand_left_2 clearfix">
  379. <div class="cruit_head_box clearfix">
  380. <div class="cruit_head_left">
  381. <a class="cruit_head_a cruit_head_only" title="">岗位职责</a>
  382. </div>
  383. </div>
  384. <article class="demand_article_1">
  385. {{ jobInfo.description }}
  386. </article>
  387. </div>
  388. <div class="demand_left_3 clearfix">
  389. <div class="cruit_head_box clearfix">
  390. <div class="cruit_head_left">
  391. <a class="cruit_head_a cruit_head_only" title="">具体要求</a>
  392. </div>
  393. </div>
  394. <article class="demand_article_1">
  395. {{ jobInfo.jt_description }}
  396. </article>
  397. </div>
  398. <div class="demand_left_4 clearfix">
  399. <div class="cruit_head_box clearfix">
  400. <div class="cruit_head_left">
  401. <a class="cruit_head_a cruit_head_only" title="">联系方式</a>
  402. </div>
  403. </div>
  404. <div class="demand_ul_2">
  405. <div class="demand_li_2 clearfix">
  406. <div class="demand_li_2_label">地址:</div>
  407. <div class="demand_li_2_text clearfix">{{ companyInfo.address_name }}</div>
  408. </div>
  409. <div class="demand_li_2 clearfix">
  410. <div class="demand_li_2_label">邮箱:</div>
  411. <div class="demand_li_2_text clearfix">{{ companyInfo.email }}</div>
  412. </div>
  413. </div>
  414. </div>
  415. <div class="demand_left_5 clearfix">
  416. <div class="cruit_head_box clearfix">
  417. <div class="cruit_head_left">
  418. <a class="cruit_head_a cruit_head_only" title="">公司介绍</a>
  419. </div>
  420. </div>
  421. <div class="demand_ul_2">
  422. <div class="demand_li_2 clearfix">
  423. <div class="demand_li_2_label">公司规模:</div>
  424. <div class="demand_li_2_text clearfix">{{ companyInfo.company_size_name }}</div>
  425. </div>
  426. <div class="demand_li_2 clearfix">
  427. <div class="demand_li_2_label">公司性质:</div>
  428. <div class="demand_li_2_text clearfix">{{ companyInfo.company_nature_name }}</div>
  429. </div>
  430. <div class="demand_li_2 clearfix">
  431. <div class="demand_li_2_label">公司行业:</div>
  432. <div class="demand_li_2_text clearfix">{{ companyInfo.hy_name }}</div>
  433. </div>
  434. </div>
  435. </div>
  436. </div>
  437. <div class="demand_2 clearfix">
  438. <div class="demand_right_1 clearfix">
  439. <div class="cruit_head_box clearfix">
  440. <div class="cruit_head_left">
  441. <a class="cruit_head_a cruit_head_only" title="">招聘单位</a>
  442. </div>
  443. </div>
  444. <div class="demand_ul_1">
  445. <span class="demand_ul_1_span dot1">
  446. {{ companyInfo.business_name }}
  447. </span>
  448. </div>
  449. </div>
  450. <div class="demand_right_2 clearfix">
  451. <div class="cruit_head_box clearfix">
  452. <div class="cruit_head_left">
  453. <a class="cruit_head_a cruit_head_only" title="">其他职位</a>
  454. </div>
  455. </div>
  456. <div class="demand_ul_1">
  457. <NuxtLink class="demand_ul_1_a dot1" :href="`/${item.pinyin}/${item.id}.html`" title=""
  458. v-for="(item, index) in other_job" :key="item.id">
  459. {{ item.title }}
  460. </NuxtLink>
  461. </div>
  462. </div>
  463. </div>
  464. </section>
  465. </main>
  466. </div> -->
  467. <HomeAdvertising :imgurl="adImg2" v-if="adImg2"></HomeAdvertising>
  468. <HomeFoot1></HomeFoot1>
  469. <div class="phone_foot pc_none"></div>
  470. </div>
  471. </template>
  472. <script setup>
  473. import { ref } from 'vue'
  474. import { ElBreadcrumb, ElBreadcrumbItem, ElMessage } from 'element-plus'
  475. import { ArrowRight } from '@element-plus/icons-vue'
  476. const route = useRoute();
  477. const type = ref(2);
  478. const nuxtApp = useNuxtApp();
  479. const axios = nuxtApp.$axios;
  480. //获取用户信息
  481. let type_id = ref('')
  482. let website_id = ref('')
  483. let getUserInfo = () => {
  484. axios.get("/user/getUserInfo").then(response => {
  485. console.log("gettypeid", response.data);
  486. type_id.value = response.data.type_id
  487. website_id.value = response.data.website_id
  488. })
  489. companyJOb()
  490. }
  491. onMounted(() => {
  492. getUserInfo()
  493. })
  494. //获取当前企业会员的职位
  495. const companyJobList = ref([])
  496. let companyJOb = () => {
  497. axios.post("/web/getWebsiteJobRecruiting", {
  498. 'pageSize': 10,
  499. 'website_id': 30,
  500. // 'website_id': website_id.value,
  501. }).then(response => {
  502. console.log("gettypeid_获取到的企业会员的职位:", response.data);
  503. companyJobList.value = response.data
  504. })
  505. }
  506. const resumeBool = ref(false)
  507. const job_search = ref('')
  508. const company_job = ref('')
  509. const allResume = ref(false)
  510. // 3 沟通简历
  511. const getContactMe = async () => {
  512. resumeBool.value = true
  513. }
  514. let getresume = () => {
  515. axios.post('/web/getWebsiteJobResume', {
  516. website_id: website_id.value,
  517. recruit_id: company_job.value,
  518. hunt_id: articleIdArr,
  519. }).then(res => {
  520. if (res.code == 200) {
  521. ElMessage({
  522. message: '投递成功',
  523. type: 'sussess',
  524. });
  525. resumeBool.value = false;
  526. } else {
  527. ElMessage({
  528. message: res.message,
  529. type: 'error',
  530. });
  531. resumeBool.value = false;
  532. }
  533. company_job.value = '';
  534. job_search.value = 2;
  535. allResume.value = false;
  536. })
  537. }
  538. //1.1 获得跳转过来的id
  539. const articleId = parseInt(route.params.id); //获得该页面的id
  540. let articleIdArr = Array.of(articleId);
  541. // console.log('111222111', articleId);
  542. //1.2 获得父级栏目的名称、id
  543. //获得当前的完整路径
  544. const fullPath = route.path;
  545. //拆分,取出来中间这一段,然后提取数字部分
  546. const segments = fullPath.split('/');
  547. const targetSegment = segments[1];
  548. const targetRoute = segments[2];
  549. console.log("targetSegment1", targetSegment);
  550. console.log("targetSegment2", targetRoute);
  551. // if (targetSegment == 'zhaogongzhaopinnongmingong') {
  552. // type.value = 1;
  553. // } else if (targetSegment == 'nongmingongqiuzhi') {
  554. // type.value = 2;
  555. // } else {
  556. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  557. // }
  558. // const numberPart = targetSegment.match(/\d+$/)?.[0];
  559. // const routeId = numberPart;
  560. let routeId;
  561. //通过导航路径反向查询导航id
  562. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  563. method: 'GET',
  564. query: {
  565. 'pinyin': targetSegment,
  566. },
  567. });
  568. if (getRouteId.code == 200) {
  569. routeId = getRouteId.data.category_id
  570. } else {
  571. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  572. // console.log("错误位置:通过url路径查询导航池id")
  573. // console.log("后端错误反馈:", getRouteId.message)
  574. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  575. }
  576. //1.3 面包屑导航
  577. const parent_name = ref("");
  578. const parent_id = ref("");
  579. const parent_pinyin = ref("");
  580. let getParentNav = async () => {
  581. const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
  582. method: 'GET',
  583. query: {
  584. 'catid': routeId
  585. },
  586. });
  587. if (listData.code == 200) {
  588. parent_name.value = listData.data.alias;
  589. parent_id.value = listData.data.parent_id;
  590. parent_pinyin.value = listData.data.aLIas_pinyin;
  591. } else {
  592. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  593. console.log("错误位置:获取面包屑导航")
  594. console.log("后端错误反馈:", listData.message)
  595. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  596. }
  597. }
  598. //获得父级栏目详情
  599. getParentNav();
  600. //1.4 展示广告
  601. let adImg1 = ref({})
  602. let adImg2 = ref({})
  603. onMounted(async () => {
  604. //从客户端获取行政职能部门 加快打开速度
  605. const { $webUrl, $CwebUrl } = useNuxtApp();
  606. //广告1
  607. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_detail_0001`
  608. const responseAd1 = await fetch(url, {
  609. headers: {
  610. 'Content-Type': 'application/json',
  611. 'Userurl': $CwebUrl,
  612. 'Origin': $CwebUrl
  613. }
  614. });
  615. const resultAd1 = await responseAd1.json();
  616. adImg1.value = resultAd1.data[0];
  617. //广告2
  618. let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_detail_0002`
  619. const responseAd2 = await fetch(url2, {
  620. headers: {
  621. 'Content-Type': 'application/json',
  622. 'Userurl': $CwebUrl,
  623. 'Origin': $CwebUrl
  624. }
  625. });
  626. const resultAd2 = await responseAd2.json();
  627. adImg2.value = resultAd2.data[0];
  628. })
  629. // 2 获取详情
  630. let jobInfo = ref([]) //基本信息
  631. let companyInfo = ref([])// 公司介绍
  632. let category = ref([]) // 栏目
  633. let other_job = ref([]) // 岗位
  634. let experienceInfo = ref([]) // 工作经历
  635. let education = ref([]) // 教育背景
  636. let skillList = ref([]) // 专业技能
  637. let resume = ref(0)
  638. const getDetail = async () => {
  639. const listData = await requestDataPromise('/web/getWebsiteJobInfo', {
  640. method: 'GET',
  641. query: {
  642. 'id': articleId,
  643. 'type': type.value,
  644. 'pageSize': 10,
  645. },
  646. });
  647. if (listData.code == 200) {
  648. console.log("详情11112222", listData.data);
  649. // console.log("详情1111222", listData.data.job[0].job_experience);
  650. // console.log("详情111122233", JSON.parse(listData.data.job[0].job_experience));
  651. // console.log("详情1111222233344", JSON.parse(listData.data.job[0].education_experience));
  652. // jobInfo.value = listData.data.job[0];
  653. // category.value = listData.data.category;
  654. if (type.value == 1) {
  655. jobInfo.value = listData.data.job[0];
  656. category.value = listData.data.category;
  657. companyInfo.value = listData.data.company[0];
  658. other_job.value = listData.data.other_job;
  659. }
  660. if (type.value == 2) {
  661. jobInfo.value = listData.data.job[0];
  662. category.value = listData.data.category;
  663. experienceInfo.value = listData.data.job_experience;
  664. education.value = listData.data.education_experience;
  665. skillList.value = JSON.parse(listData.data.job[0].skillList);
  666. resume.value = listData.data.resume;
  667. }
  668. }
  669. }
  670. getDetail();
  671. //获取行业 职位 具体职位
  672. const industry_categoryList = ref([]) //行业类别列表
  673. const position_categoryList = ref([]) //职位类别列表
  674. const positionList = ref([]) //具体职位列表
  675. const getData = async () => {
  676. const getData = await requestDataPromise('/web/getWebsiteJobSelect', {
  677. method: 'GET',
  678. query: {},
  679. });
  680. if (getData.code == 200) {
  681. // console.log("获取到的分类数据:", getData.data);
  682. industry_categoryList.value = getData.data.hy; //行业
  683. position_categoryList.value = getData.data.zw; //职位
  684. positionList.value = getData.data.jtzw; //具体职位
  685. }
  686. }
  687. getData()
  688. //4.设置seo信息 start---------------------------------------->
  689. //4.1 设置seo信息
  690. let seoTitle;
  691. let seoDescription;
  692. let seoKeywords;
  693. const listData = await requestDataPromise('/web/getWebsiteJobInfo', {
  694. method: 'GET',
  695. query: {
  696. 'id': articleId,
  697. 'type': type.value,
  698. 'pageSize': 10,
  699. },
  700. });
  701. if (listData.code == 200) {
  702. seoTitle = listData.data.job[0].name;
  703. seoDescription = listData.data.job[0].self_evaluation;
  704. seoKeywords = JSON.parse(listData.data.job[0].skillList)[0].skill;
  705. if (JSON.parse(listData.data.job[0].skillList).length > 1) {
  706. for (let i = 1; i < JSON.parse(listData.data.job[0].skillList).length; i++) {
  707. seoKeywords += "," + JSON.parse(listData.data.job[0].skillList)[i].skill;
  708. }
  709. }
  710. }
  711. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  712. method: 'GET',
  713. query: {
  714. 'catid': routeId,
  715. },
  716. });
  717. if (setData.code == 200) {
  718. let seoSuffix = setData.data.suffix;
  719. let seoName = setData.data.website_name;
  720. useSeoMeta({
  721. title: seoTitle + "_" + seoName + "_" + seoSuffix,
  722. meta: [
  723. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  724. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  725. { name: 'viewport', content: 'width=device-width,initial-scale=1,user-scalable=no',tagPriority: 10 }
  726. ]
  727. });
  728. } else {
  729. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  730. console.log("错误位置:设置列表页面SEO数据")
  731. console.log("后端错误反馈:", setData.message)
  732. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  733. }
  734. //4.设置seo信息 end---------------------------------------->
  735. </script>
  736. <style scoped lang="less">
  737. @import "@/assets/css/zgzpjianli.less";
  738. @import "@/assets/css/zgzpzhaopin.less";
  739. @import "@/assets/css/zgzpsearch.less";
  740. .contact_me {
  741. width: 1200px;
  742. margin: 30px auto;
  743. height: 70px;
  744. .contact_me_btn {
  745. width: 127px;
  746. height: 45px;
  747. line-height: 45px;
  748. background-color: #489d97;
  749. color: #fff;
  750. border-radius: 4px;
  751. font-size: 16px;
  752. border: none;
  753. cursor: pointer;
  754. .contact_me_btn_img {
  755. display: inline-block;
  756. width: 18px;
  757. height: 18px;
  758. background-image: url('@/public/images/comments.png');
  759. vertical-align: -4px;
  760. margin-left: 20px;
  761. }
  762. }
  763. .contact_me_btn_2 {
  764. background-color: #ccc;
  765. cursor: default;
  766. }
  767. }
  768. </style>
  769. <style lang="less" scoped>
  770. @media screen and (min-width:801px){/*pc*/
  771. .seek_in_head_text:nth-last-of-type(1){margin-right:0px; }
  772. .pc_none{display:none;}
  773. }
  774. @media screen and (max-width:800px){/*ipad_phone*/
  775. .breadcrumb_box {
  776. height: 22px;
  777. width: 92%;
  778. margin: 10px auto;
  779. word-break: keep-all;
  780. white-space: nowrap;
  781. overflow: hidden;
  782. text-overflow: ellipsis;
  783. width: 92%;
  784. font-size: 14px;
  785. color: #666;
  786. * {
  787. font-size: 14px;
  788. display: inline;
  789. color: #666;
  790. line-height: 22px;
  791. height: 22px;
  792. margin-right: 5px;
  793. }
  794. }
  795. .gerenjianli { width:92%;margin:0px auto 0px;min-height:auto; }
  796. .index_1{width:100%;border-bottom:solid 8px #f5f5f5;padding-bottom:13px;}
  797. .index_5 .seek_in{margin-top:12px;}
  798. .index_6 .seek_in{margin-top:0px;}
  799. .phone_box_1_head_time{
  800. float: right;
  801. height: 40px;
  802. line-height: 40px;
  803. font-size: 12px;
  804. color: #999;
  805. }
  806. .phone_box_1{
  807. margin: 0px auto 0px;
  808. .phone_box_1_head {
  809. height: 40px;
  810. line-height: 40px;
  811. background: #fff;
  812. border-bottom: 1px solid #E6E6E6;
  813. width: 100%;
  814. a {
  815. float: left;
  816. height: 40px;
  817. line-height: 40px;
  818. margin: 0;
  819. position: relative;
  820. color: #489d97;
  821. font-size: 16px;
  822. font-weight: bold;
  823. box-sizing: border-box;
  824. position: relative;
  825. padding-left: 8px;
  826. }
  827. a::before {
  828. content: '';
  829. display: block;
  830. position: absolute;
  831. left: 0px;
  832. top: 12px;
  833. background: linear-gradient(to top, #0998A9, #6ADDD6);
  834. width: 3px;
  835. height: 15px;
  836. }
  837. }
  838. }
  839. .index_1_left{ width:70%;float:left;}
  840. .index_1_right{ width:27%;float:right;margin-top:12px;
  841. height:90px; }
  842. .index_1_right_img{ width:100%; height:100%; margin-top:0px;}
  843. .seek_introduce_h4{font-size: 16px; margin-right:8px;}
  844. .seek_introduce_left{width:100%;float:none; }
  845. .seek_introduce_tag{margin:5px 0px 0px 0px; font-size:12px;padding:0px 5px 0px 22px;
  846. background-position-x:4px;
  847. }
  848. .seek_introduce_title_box{margin-top:11px;}
  849. .seek_introduce_title_box span{font-size: 12px;float:left;}
  850. .seek_introduce_title_box .seek_introduce_title{margin-right:0px;}
  851. .seek_introduce_title_box .seek_introduce_label{margin-right:0px;}
  852. .seek_introduce_box{margin-top:12px;}
  853. .seek_introduce_foot{float:left;width:100%;}
  854. .phone_introduce_title_hr{float:left;width:100%; }
  855. .seek_introduce_foot{ margin-top:11px; font-size: 12px;line-height:16px;
  856. word-wrap: break-word;
  857. overflow-wrap: break-word;
  858. white-space: pre-wrap;
  859. word-break: break-all;
  860. color:#999;
  861. }
  862. .seek_introduce_foot_text{float:none;display:inline-block;height:12px;
  863. margin:0px 8px 0px;padding:0px;box-sizing:border-box;
  864. background:#999;border:0px;border-top:solid 4px #fff;
  865. width:1px;
  866. }
  867. .seek_introduce_foot_text:nth-last-of-type(1) {
  868. display:none;
  869. }
  870. // .seek_introduce_foot{ margin-top:11px; font-size: 12px;line-height:16px; }
  871. // .seek_introduce_foot_text{font-size: 12px;height:12px;line-height:12px;margin-bottom:5px;}
  872. .jianli{width:92%;margin:0px auto 0px;}
  873. .index_4{margin-top:11px;}
  874. .index_5{margin-top:11px;}
  875. .index_6{margin-top:11px;}
  876. .seek_article{
  877. margin-top: 12px!important;
  878. }
  879. .seek_article *,.seek_article{
  880. font-size: 14px!important;
  881. line-height: 26px!important;
  882. }
  883. .seek_in_head_text{ width:100%; font-size:12px;color:#666;
  884. height:auto;line-height:24px;margin-bottom:4px;margin-right:0px;}
  885. .seek_in_head_text:nth-of-type(1){font-weight:bold;font-size:14px;color:#333;width:100%; }
  886. // .seek_in_head_text:nth-of-type(3){float:left!important;width:auto;background:red;margin-right:6px;}
  887. // .seek_in_head_text:nth-of-type(4){float:left!important;width:auto;background:teal;}
  888. .seek_in_li{line-height:24px;height:auto;margin-bottom:4px;display:block;}
  889. .seek_in_label{line-height:24px;height:24px;font-size:12px;color:#666;}
  890. .seek_in_li_text{line-height:24px; height:auto;font-size:12px; word-wrap: break-word;
  891. width:100%;
  892. overflow-wrap: break-word;
  893. white-space: pre-wrap;
  894. word-break: break-all;
  895. color:#666;
  896. }
  897. .seek_in_head{margin:12px 0px 0px;}
  898. .phone_name_1{color:#666;}
  899. .phone_seek_in_head{
  900. .seek_in_head_text:nth-of-type(2),
  901. .seek_in_head_text:nth-of-type(3),
  902. .seek_in_head_text:nth-of-type(4){
  903. width:auto;float:left!important;
  904. }
  905. .seek_in_head_text:nth-of-type(3){margin:0px 22px;}
  906. }
  907. .seek_article_2{
  908. margin-top: 12px!important;
  909. }
  910. .seek_article_2 *,.seek_article_2{
  911. font-size: 14px!important;
  912. line-height: 26px!important;
  913. }
  914. .contact_me{
  915. background: #fff;
  916. position: fixed;
  917. left: 0px;
  918. bottom: 0px;
  919. text-align: center;
  920. height: 55px;
  921. width: 100%;
  922. z-index: 1122;margin:0;
  923. div{
  924. display:inline-block;margin-top:11px;
  925. height:33px!important;line-height:33px!important;
  926. }
  927. }
  928. .contact_me_btn_img{margin-left:0px!important;}
  929. .phone_foot{height:55px; }
  930. .phone_box_2{
  931. margin: 0px auto 0px;
  932. .phone_box_1_head {
  933. height: 40px;
  934. line-height: 40px;
  935. background: #fff;
  936. border-bottom: 1px solid #E6E6E6;
  937. width: 100%;
  938. a {
  939. float: left;
  940. height: 40px;
  941. line-height: 40px;
  942. margin: 0;
  943. position: relative;
  944. color: #489d97;
  945. font-size: 16px;
  946. font-weight: bold;
  947. box-sizing: border-box;
  948. position: relative;
  949. padding-left: 8px;
  950. }
  951. a::before {
  952. content: '';
  953. display: block;
  954. position: absolute;
  955. left: 0px;
  956. top: 12px;
  957. background: linear-gradient(to top, #0998A9, #6ADDD6);
  958. width: 3px;
  959. height: 15px;
  960. }
  961. }
  962. }
  963. .phone_box_3{
  964. margin: 0px auto 0px;
  965. .phone_box_1_head {
  966. height: 40px;
  967. line-height: 40px;
  968. background: #fff;
  969. border-bottom: 1px solid #E6E6E6;
  970. width: 100%;
  971. a {
  972. float: left;
  973. height: 40px;
  974. line-height: 40px;
  975. margin: 0;
  976. position: relative;
  977. color: #489d97;
  978. font-size: 16px;
  979. font-weight: bold;
  980. box-sizing: border-box;
  981. position: relative;
  982. padding-left: 8px;
  983. }
  984. a::before {
  985. content: '';
  986. display: block;
  987. position: absolute;
  988. left: 0px;
  989. top: 12px;
  990. background: linear-gradient(to top, #0998A9, #6ADDD6);
  991. width: 3px;
  992. height: 15px;
  993. }
  994. }
  995. }
  996. .phone_box_4{
  997. margin: 0px auto 0px;
  998. .phone_box_1_head {
  999. height: 40px;
  1000. line-height: 40px;
  1001. background: #fff;
  1002. border-bottom: 1px solid #E6E6E6;
  1003. width: 100%;
  1004. a {
  1005. float: left;
  1006. height: 40px;
  1007. line-height: 40px;
  1008. margin: 0;
  1009. position: relative;
  1010. color: #489d97;
  1011. font-size: 16px;
  1012. font-weight: bold;
  1013. box-sizing: border-box;
  1014. position: relative;
  1015. padding-left: 8px;
  1016. }
  1017. a::before {
  1018. content: '';
  1019. display: block;
  1020. position: absolute;
  1021. left: 0px;
  1022. top: 12px;
  1023. background: linear-gradient(to top, #0998A9, #6ADDD6);
  1024. width: 3px;
  1025. height: 15px;
  1026. }
  1027. }
  1028. }
  1029. .phone_box_5{
  1030. margin: 0px auto 0px;
  1031. .phone_box_1_head {
  1032. height: 40px;
  1033. line-height: 40px;
  1034. background: #fff;
  1035. border-bottom: 1px solid #E6E6E6;
  1036. width: 100%;
  1037. a {
  1038. float: left;
  1039. height: 40px;
  1040. line-height: 40px;
  1041. margin: 0;
  1042. position: relative;
  1043. color: #489d97;
  1044. font-size: 16px;
  1045. font-weight: bold;
  1046. box-sizing: border-box;
  1047. position: relative;
  1048. padding-left: 8px;
  1049. }
  1050. a::before {
  1051. content: '';
  1052. display: block;
  1053. position: absolute;
  1054. left: 0px;
  1055. top: 12px;
  1056. background: linear-gradient(to top, #0998A9, #6ADDD6);
  1057. width: 3px;
  1058. height: 15px;
  1059. }
  1060. }
  1061. }
  1062. .phone_box_6{
  1063. margin: 0px auto 0px;
  1064. .phone_box_1_head {
  1065. height: 40px;
  1066. line-height: 40px;
  1067. background: #fff;
  1068. border-bottom: 1px solid #E6E6E6;
  1069. width: 100%;
  1070. a {
  1071. float: left;
  1072. height: 40px;
  1073. line-height: 40px;
  1074. margin: 0;
  1075. position: relative;
  1076. color: #489d97;
  1077. font-size: 16px;
  1078. font-weight: bold;
  1079. box-sizing: border-box;
  1080. position: relative;
  1081. padding-left: 8px;
  1082. }
  1083. a::before {
  1084. content: '';
  1085. display: block;
  1086. position: absolute;
  1087. left: 0px;
  1088. top: 12px;
  1089. background: linear-gradient(to top, #0998A9, #6ADDD6);
  1090. width: 3px;
  1091. height: 15px;
  1092. }
  1093. }
  1094. }
  1095. .phone_none{display:none;}
  1096. }
  1097. </style>